# -*- coding:utf-8 -*-

from app import db


class Purchase_Application(db.Model):				#记录用户的购车申请
	__tablename__ = 'purchase_application'
	id = db.Column(db.Integer, primary_key=True)
	number = db.Column(db.String(20), unique=True)		#申请编号
	car_id = db.Column(db.Integer, db.ForeignKey('car.id'))  #该车辆在数据库中的id
	car_title = db.Column(db.Text)				#车辆名称（即前台显示的标题）
	buy_plan = db.Column(db.String(45))  			#购车方案（购买自营车辆时可以选择还款方案）
	applicant_id = db.Column(db.Integer, db.ForeignKey('user.id'))  # 申请人的id
	name = db.Column(db.String(45))				#申请人姓名
	applicant_type = db.Column(db.SmallInteger)		#申请人类型，0为个人，1为商家
	area = db.Column(db.Text)				#申请人所在地区
	phone = db.Column(db.String(23))			#申请人电话
	submission_date = db.Column(db.DateTime)		#申请提交的时间，精确到秒
	state = db.Column(db.SmallInteger)			#申请的当前状态,0为待分配，1为待跟进，2为跟进中，3为线下跟进，4为废弃
	mark = db.Column(db.String(100))			#用户备注
	tracker_id = db.Column(db.Integer)			#负责跟进该申请的客服的id
	notice = db.Column(db.Text)				#与该申请有关联的员工id，当申请的状态发生改变时，通知这些人员
	outside = db.Column(db.Boolean)				#标记该车辆是否属于外部车辆
	finish_date = db.Column(db.DateTime)			#该申请终结的时间，精确到秒
	purchase = db.relationship('Car', backref='purchase_application', lazy='joined')
	
	def __repr__(self):
		return '<P_A %s>' % self.number
	
	def save(self):
		db.session.add(self)
		db.session.commit()


class Business_Application(db.Model):				#记录用户的业务申请，业务类型有租车，金融，服务
	__tablename__ = "business_application"
	id = db.Column(db.Integer, primary_key=True)
        number = db.Column(db.String(20), unique=True)		#申请的编号
	application_type = db.Column(db.String(20))		#所申请业务的类型，rent，finance，service
	product = db.Column(db.String(100))			#业务的名称
	applicant_id = db.Column(db.Integer)			#申请人的id
	name = db.Column(db.String(45))				#申请人姓名
	applicant_type = db.Column(db.SmallInteger)		#申请人类型，0为个人，1为商家
	area = db.Column(db.Text)				#申请人所在地区
	phone = db.Column(db.String(23))			#申请人电话
	submission_date = db.Column(db.DateTime)		#申请提交的时间，精确到秒
	state = db.Column(db.SmallInteger)			#申请的当前状态,0为待分配，1为待跟进，2为跟进中，3为线下跟进，4为废弃
	mark = db.Column(db.String(100))			#用户备注
	tracker_id = db.Column(db.Integer)			#负责跟进该申请的客服的id
	notice = db.Column(db.Text)				#与该申请有关联的员工id，当申请的状态发生改变时，通知这些人员
	finish_date = db.Column(db.DateTime)			#该申请终结的时间，精确到秒

	def __repr__(self):
		return '<B_A %s>' % self.number

	def save(self):
		db.session.add(self)
		db.session.commit()


class Advice(db.Model):						#用于记录用户的投诉与建议
	__tablename__ = "advice"
	id = db.Column(db.Integer, primary_key=True)
        number = db.Column(db.String(20), unique=True)		#投诉建议的编号
	type = db.Column(db.Boolean)				#类型,0为投诉，1为建议
	submitter_id = db.Column(db.Integer)			#提交人id
	submitter_type = db.Column(db.SmallInteger)		#提交人类型，0为个人，1为商家
	name = db.Column(db.String(45))				#提交人姓名
	area = db.Column(db.Text)				#提交人所在地区
	phone = db.Column(db.String(23))			#提交人电话
	submission_date = db.Column(db.DateTime)		#提交日期，精确到秒
	state = db.Column(db.SmallInteger)			#记录的当前状态，0为待分配, 1为待跟进，2为跟进中，3为已处理，4为废弃
	content = db.Column(db.Text)				#投诉/建议的内容
	tracker_id = db.Column(db.Integer)			#负责跟进的客服id
	notice = db.Column(db.Text)				#与该投诉/建议有关联的员工id，当状态发生改变时，通知这些人员
	finish_date = db.Column(db.DateTime)			#该投诉/建议终结的时间，精确到秒

	def __repr__(self):
		return '<advice %s>' % self.number

	def save(self):
		db.session.add(self)
		db.session.commit()


class Tracking(db.Model):					#用于记录申请的跟进内容
	__tablename__ = "tracking"
	id = db.Column(db.Integer, primary_key=True)
	application_type = db.Column(db.String(45))		#该跟进记录所属的申请的类型，有buy，rent，finance，service，advice，即与上述的申请类型对应
	aid = db.Column(db.Integer)				#该跟进记录所属的申请的id
	tracker_id = db.Column(db.Integer)			#跟进人的id
	tracker_name = db.Column(db.String(45))			#跟进人姓名
	content = db.Column(db.Text)				#跟进内容
	time = db.Column(db.DateTime)				#跟进时间

	def __repr__(self):
		return '<Tracking %s>' % self.id

	def save(self):
		db.session.add(self)
		db.session.commit()


class Car_Review(db.Model):					#用于记录用户提交车辆的审批情况
	__tablename__ = "car_review"
	id = db.Column(db.Integer, primary_key=True)
	cid = db.Column(db.Integer)				#车辆的id
	reviewer_id = db.Column(db.Integer)			#审批人的id
	state = db.Column(db.Boolean)				#审批结果，0通过，1拒绝
	reason = db.Column(db.Text)				#拒绝的原因
	time = db.Column(db.DateTime)				#审批时间

	def __repr__(self):
		return '<Car_Review %s>' % self.id	
	
	def save(self):
		db.session.add(self)
		db.session.commit()
